package com.ideaaedi.log4j2.defender.strategy;

/**
 * 脱敏策略
 *
 * @author JustryDeng
 * @since 2021/7/21 1:18:24
 */
public interface DefenderStrategy {

    /**
     * 类别
     * <br/>
     * 如: 类别[电话]，就包含mobile phone telephone等
     *
     * @return  保留前缀个数
     */
    String category();
    
    /**
     * 保留前缀个数 (需满足 >= 0个)
     * <br/>
     * 如: 538261, 保留前缀个数为2的话， 那么就是 53
     *
     * @return  保留前缀个数
     */
    int retainPrefixCount();

    /**
     * 保留后缀个数 (需满足 >= 0个)
     * <br/>
     * 如: 538261, 保留后缀个数为2的话， 那么就是 61
     *
     * @return  保留后缀个数
     */
    int retainSuffixCount();

    /**
     * 用于替代明文的 密文字符
     * <br/>
     * 如: 对538261使用*进行前2后2的脱敏, 那么就是 53**61
     *
     * @return  用于替代明文的 密文字符
     */
    default char replaceChar() {
        return '*';
    }
}
